Skip to content

feat(acp): add generic ACP agent type with launch confirmation - #1225

Closed
wpfleger96 wants to merge 8 commits into
mainfrom
hayt/generic-acp-plugin
Closed

wpfleger96 wants to merge 8 commits into
mainfrom
hayt/generic-acp-plugin

Conversation

@wpfleger96

@wpfleger96 wpfleger96 commented Oct 15, 2026 •

Copy link
Copy Markdown
Member

🤖 Adds buzz.acp, an agent type for long-tail harnesses that speak the Agent Client Protocol (Cursor, OpenCode, Amp, Gemini CLI, Devin, Grok Build, Kimi Code, Oh My Pi). An owner picks a preset or types a command, args and env; no per-harness JS plugin. This PR has the settings and the launch confirmation; the runtime that starts the harness comes next on the shared ACP client (#1227).

  • presets.ts: eight presets as data, all marked unverified.
  • config.ts: per-agent config, validation (non-empty command not starting with - or containing =, no NUL, valid env names, BUZZ_*/NOSTR_* rejected), a SHA-256 approval over ["buzz.acp/approval/1", command, args, sortedEnv, workspace], and launch(), which validates and digests one snapshot. carry passes on only instructions; adopt takes instructions and leaves approval empty.
  • tabs.tsx: settings tab with preset/command/args/env/workspace/instructions, a confirmation dialog showing the exact argv, workspace, env names and PATH only, a Check button enabled only while the approval is current, and a History tab saying history isn't available.
  • Registered in src/bundled/index.ts with enabledByDefault: false until the runtime lands.

Hayt added 2 commits October 15, 2026 16:56
Owners will add long-tail ACP harnesses by preset or typed command; the launch must be owner-confirmed, so approval is a digest over the exact argv, env and workspace that launch re-checks.

Signed-off-by: Hayt <211b96e6a2b7f45fd4047988976c7bbbeeda0c15f3ae7b32eec20834b5a55118@buzz.block.builderlab.xyz>
Owners confirm the exact argv, workspace and env names before an ACP agent can launch; Check runs only while that confirmation is current. The type registers disabled by default until its runtime lands, and carries only instructions across type changes.

Signed-off-by: Hayt <211b96e6a2b7f45fd4047988976c7bbbeeda0c15f3ae7b32eec20834b5a55118@buzz.block.builderlab.xyz>
@wpfleger96 wpfleger96 changed the title feat(acp): add generic ACP plugin config, presets and approval feat(acp): add generic ACP agent type with launch confirmation Oct 15, 2026
Hayt added 6 commits October 15, 2026 17:09
Signed-off-by: Hayt <211b96e6a2b7f45fd4047988976c7bbbeeda0c15f3ae7b32eec20834b5a55118@buzz.block.builderlab.xyz>
Desktop reads the native catalog, so without it the plugin could not be enabled.

Signed-off-by: Hayt <211b96e6a2b7f45fd4047988976c7bbbeeda0c15f3ae7b32eec20834b5a55118@buzz.block.builderlab.xyz>
The edited config restored the saved approval on every render, so switching away from a confirmed preset and back left Check enabled.

Signed-off-by: Hayt <211b96e6a2b7f45fd4047988976c7bbbeeda0c15f3ae7b32eec20834b5a55118@buzz.block.builderlab.xyz>
Match the native host's absolute-or-~/ rule, and refuse empty or multi-line args so a stored argv always round-trips through the one-per-line editor.

Signed-off-by: Hayt <211b96e6a2b7f45fd4047988976c7bbbeeda0c15f3ae7b32eec20834b5a55118@buzz.block.builderlab.xyz>
Joining then splitting stored args turned ["a\nb"] into two args and [""] into none, so Save could quietly store a different argv. The untouched argv now reaches validation as-is and blocks Save.

Signed-off-by: Hayt <211b96e6a2b7f45fd4047988976c7bbbeeda0c15f3ae7b32eec20834b5a55118@buzz.block.builderlab.xyz>
Registering buzz.acp natively made it a bundled plugin that starts disabled, which the defaults test didn't allow for.

Signed-off-by: Hayt <211b96e6a2b7f45fd4047988976c7bbbeeda0c15f3ae7b32eec20834b5a55118@buzz.block.builderlab.xyz>
@wpfleger96

Copy link
Copy Markdown
Member Author

🤖 Folded into #1251, which carries these commits unchanged plus the runtime.

@wpfleger96 wpfleger96 closed this Oct 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant